from rest_framework.generics import ListAPIView, CreateAPIView
from users.models import User
from meiduo_admin.serializers.user_serializers import UserSerializer
from meiduo_admin.utils import MyPagination


class UserView(ListAPIView, CreateAPIView):
    """ 用户表数据 增删改查 """

    queryset = User.objects.all()
    # 指定使用的序列化器
    serializer_class = UserSerializer
    # 指定分页器
    pagination_class = MyPagination

    # 重写get_queryset方法，根据前端是否传递keyword值返回不同查询结果
    def get_queryset(self):
        # 获取前端传递的查询字符串参数，统一转化为小写
        keyword = self.request.query_params.get("keyword")
        if keyword:
            # 如果有关键字参数，则使用模糊查询，忽略大小写
            # contains大小写敏感；icontains大小写不敏感
            return self.queryset.filter(username__icontains=keyword.lower()).order_by("id")
        else:
            # 如果关键字参数为空，则显示所有用户
            return self.queryset.all().order_by("id")
